using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using AccesoDatos;
using Entidades;

namespace Negocio.Negocio
{
    // Clase Negocio
    public class Sala
    {
        #region Metodos publicos

        // Devuelve la lista de salas
        public DataTable ListaSala(String CodigoSala, String Descripcion,
            String Estado, String Capacidad, String Localizacion)
        {
            try
            {
                SqlHelper oSql = new SqlHelper();
                RutinasGenericas oRutGen = new RutinasGenericas();

                // Seteo de valores para el criterio
                int iCriterio;
                if (CodigoSala == "" && Descripcion == "" && Estado == "" && Capacidad == "" && Localizacion == "")
                {
                    iCriterio = 0; // Valor por defecto para buscar a todos
                }
                else iCriterio = 1;

                String iCodigoSala = CodigoSala == "" ? "0" : CodigoSala;
                String iEstado = Estado == "" ? "0" : Estado;
                String iCapacidad = Capacidad == "" ? "0" : Capacidad;

                Object[,] parmSP = { 
                    {"@iCriterio", SqlDbType.Int, 4, iCriterio},
                    {"@iCodigoSala", SqlDbType.Int, 4, Convert.ToInt32(iCodigoSala)},
                    {"@tDescripcion", SqlDbType.VarChar, 30, Descripcion},
                    {"@rCapacidad", SqlDbType.Int, 4, Convert.ToInt32(iCapacidad)},
                    {"@tLocalizacion", SqlDbType.VarChar, 20, Localizacion},
                    {"@oEstado", SqlDbType.Int, 4, Convert.ToInt32(iEstado)}
                };

                return oSql.ExecSPReturnDataTable(oRutGen.CadenaConexion(), "UP_VTA_SEL_Sala", parmSP);
            }
            catch (Exception ex)
            {
                throw new Exception("listaSala() - Negocio " + ex.Message);
            }
        }

        
        // Inserta una sala
        public int InsertaSala(Entidades.Sala sala)
        {
            try
            {
                SqlHelper oSql = new SqlHelper();
                RutinasGenericas oRutGen = new RutinasGenericas();

                Object[,] parmSP = { 
                    {"@tDescripcion", SqlDbType.VarChar, 30, sala.Descripcion},
                    {"@rCapacidad", SqlDbType.Int, 4, sala.Capacidad},
                    {"@tLocalizacion", SqlDbType.VarChar, 20, sala.Localizacion},
                    {"@tMedidas", SqlDbType.VarChar, 30, sala.Medidas},
                    {"@oEstadoSala", SqlDbType.Int, 4, sala.Estado},
                };

                return (int)oSql.ExecSPReturnEscalar(oRutGen.CadenaConexion(), "UP_VTA_INS_Sala", parmSP);
            }
            catch (Exception ex)
            {
                throw new Exception("insertaSala() - " + ex.Message);
            }
        }

        // Actualiza una sala
        public int EditaSala(Entidades.Sala sala)
        {
            try
            {
                SqlHelper oSql = new SqlHelper();
                RutinasGenericas oRutGen = new RutinasGenericas();

                Object[,] parmSP = { 
                    {"@iCodigoSala", SqlDbType.Int, 4, sala.CodigoSala},
                    {"@tDescripcion", SqlDbType.VarChar, 30, sala.Descripcion},
                    {"@rCapacidad", SqlDbType.Int, 4, sala.Capacidad},
                    {"@tLocalizacion", SqlDbType.VarChar, 20, sala.Localizacion},
                    {"@tMedidas", SqlDbType.VarChar, 30, sala.Medidas},
                    {"@oEstadoSala", SqlDbType.Int, 4, sala.Estado},
                };

                return (int)oSql.ExecSPReturnEscalar(oRutGen.CadenaConexion(), "UP_VTA_UPD_Sala", parmSP);
            }
            catch (Exception ex)
            {
                throw new Exception("actualizaSala() - " + ex.Message);
            }
        }

        // Elimina una sala
        public int EliminaSala(Entidades.Sala sala)
        {
            try
            {
                SqlHelper oSql = new SqlHelper();
                RutinasGenericas oRutGen = new RutinasGenericas();

                Object[,] parmSP = { 
                    {"@iCodigoSala", SqlDbType.Int, 4, sala.CodigoSala},
                };

                return (int)oSql.ExecSPReturnEscalar(oRutGen.CadenaConexion(), "UP_VTA_DEL_Sala", parmSP);
            }
            catch (Exception ex)
            {
                throw new Exception("eliminaSala() - " + ex.Message);
            }
        }

        public DataTable ListaEstado() {

            try
            {
                SqlHelper oSql = new SqlHelper();
                RutinasGenericas oRutGen = new RutinasGenericas();

                return oSql.ExecSPReturnDataTable(oRutGen.CadenaConexion(), "UP_VTA_SEL_Estado");
            }
            catch (Exception ex)
            {
                throw new Exception("listaEstado() - " + ex.Message);
            }
        }
        

        #endregion
    }
}
